[id].vue 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. <template>
  2. <LayoutNavigation />
  3. <LayoutContainer>
  4. <v-row>
  5. <v-col cols="12">
  6. <CommonBanner :imageSrc="'/images/actu/pub.png'" imageAlt="'line'" />
  7. </v-col>
  8. </v-row>
  9. <div v-if="job">
  10. <v-row class="custom-row">
  11. <v-col>
  12. <div class="d-flex align-items-center">
  13. <NuxtLink
  14. to="/nous-rejoindre"
  15. style="text-decoration: none !important"
  16. >
  17. <div class="carousel-button">
  18. <i class="fa-solid fa-arrow-left" />
  19. </div>
  20. </NuxtLink>
  21. <NuxtLink to="/nous-rejoindre" class="ml-2 back-button mt-12">
  22. Retour aux annonces
  23. </NuxtLink>
  24. </div>
  25. </v-col>
  26. </v-row>
  27. <LayoutUITitlePage :title="job.title" />
  28. <v-row class="blue-content">
  29. <v-col cols="6">
  30. <v-row class="custom-row">
  31. <h4 class="detail-job mt-6 ml-12">
  32. Type de contrat :
  33. <span class="bold">{{ job.contractType }} </span>
  34. </h4></v-row
  35. >
  36. <v-row class="custom-row">
  37. <h4 class="detail-job mt-6 ml-12">
  38. Location :
  39. <span class="bold">{{ job.postalCode }} {{ job.city }}</span>
  40. </h4></v-row
  41. >
  42. </v-col>
  43. <v-col cols="6">
  44. <v-row class="custom-row">
  45. <h4 class="detail-job mt-6 ml-12">
  46. Secteur d'activité : <span class="bold">{{ job.sector }}</span>
  47. </h4></v-row
  48. >
  49. <v-row class="custom-row">
  50. <h4 class="detail-job mt-6 ml-12">
  51. Date de parution :
  52. <span class="bold">{{ formatDate(job.startPublication) }}</span>
  53. </h4></v-row
  54. >
  55. </v-col>
  56. </v-row>
  57. <v-row>
  58. <p class="custom-row description-job mb-12" v-html="job.content"></p>
  59. </v-row>
  60. <v-row class="d-flex justify-center align-center">
  61. <v-btn class="btn mb-12" text>
  62. <v-icon class="fas fa-info mr-2"></v-icon>Je postule
  63. </v-btn>
  64. </v-row>
  65. </div>
  66. <v-row class="d-flex justify-space-between custom-row">
  67. <p class="share">MOTS CLÉS</p>
  68. <div>
  69. <p class="share">PARTAGER</p>
  70. </div>
  71. </v-row>
  72. <v-row class="d-flex justify-space-between mb-8 custom-row">
  73. <p class="key-word mt-3">ROCK CONCERT FESTIVAL</p>
  74. <div class="social-icons">
  75. <a href="https://facebook.com" target="_blank" class="social-icon">
  76. <i class="fa-brands fa-facebook"></i>
  77. </a>
  78. <a href="https://twitter.com" target="_blank" class="social-icon">
  79. <i class="fa-brands fa-twitter"></i>
  80. </a>
  81. <a href="https://messenger.com" target="_blank" class="social-icon">
  82. <i class="fa-brands fa-facebook-messenger"></i>
  83. </a>
  84. <a href="https://instagram.com" target="_blank" class="social-icon">
  85. <i class="fa-brands fa-instagram"></i>
  86. </a>
  87. <a href="https://linkedin.com" target="_blank" class="social-icon">
  88. <i class="fa-brands fa-linkedin"></i>
  89. </a>
  90. <a href="mailto:example@example.com" class="social-icon">
  91. <i class="fa-solid fa-envelope"></i>
  92. </a>
  93. </div>
  94. </v-row>
  95. </LayoutContainer>
  96. <LayoutFooterPrefooter />
  97. <LayoutFooter />
  98. </template>
  99. <script setup lang="ts">
  100. import { ref } from "vue";
  101. import { useRoute } from "vue-router";
  102. import "vue3-carousel/dist/carousel.css";
  103. import { useMaestroRequestService } from "~/composables/useMaestroRequestService";
  104. const { apiRequestService } = useMaestroRequestService();
  105. const job = ref(null);
  106. const route = useRoute();
  107. const jobID = route.params.id;
  108. const pending = ref(true);
  109. const config = useRuntimeConfig();
  110. const formatDate = (date: string) => {
  111. const dateObject = new Date(date);
  112. const day = dateObject.getDate();
  113. const month = dateObject.getMonth() + 1;
  114. const year = dateObject.getFullYear();
  115. return `${day}/${month}/${year}`;
  116. };
  117. onMounted(async () => {
  118. try {
  119. job.value = await apiRequestService.get(
  120. `${config.public.apiBaseUrl}/api/job-postings/${jobID}`
  121. );
  122. pending.value = false;
  123. } catch (error) {
  124. console.error("Erreur lors de la récupération de l'annonce", error);
  125. pending.value = false;
  126. }
  127. });
  128. const getImageUrl = (attachment: string) => {
  129. if (attachment) {
  130. return `${config.public.apiBaseUrl}/uploads/job_postings/${attachment}`;
  131. }
  132. console.log("pas d'image");
  133. };
  134. </script>
  135. <style scoped>
  136. .description-job {
  137. color: #0e2d32;
  138. text-align: justify;
  139. font-family: "Barlow";
  140. font-size: 1.875rem;
  141. font-style: normal;
  142. font-weight: 500;
  143. line-height: 2.125rem;
  144. }
  145. .custom-row {
  146. width: 90%;
  147. margin-left: auto;
  148. margin-right: auto;
  149. }
  150. :deep().text-left,
  151. :deep().text-right,
  152. :deep().description-square,
  153. :deep().black-square,
  154. :deep().blue-square {
  155. display: none;
  156. }
  157. :deep().text-right {
  158. display: none;
  159. }
  160. :deep().cover-image {
  161. transform: none;
  162. }
  163. .bold {
  164. font-weight: bold;
  165. }
  166. .detail-job {
  167. font-family: "Barlow";
  168. font-style: normal;
  169. font-weight: 500;
  170. font-size: 25px;
  171. line-height: 18px;
  172. margin-bottom: 1rem;
  173. }
  174. .blue-content {
  175. background-color: #64afb7;
  176. height: 10rem;
  177. margin-top: -1rem;
  178. margin-bottom: 2rem;
  179. }
  180. .banner-container {
  181. position: relative;
  182. overflow: hidden;
  183. display: flex;
  184. justify-content: center;
  185. align-items: flex-start;
  186. height: 25rem;
  187. width: 100%;
  188. }
  189. .cover-image {
  190. width: 95%;
  191. height: auto;
  192. object-fit: cover;
  193. margin: 0 auto;
  194. display: block;
  195. }
  196. .btn {
  197. background: var(--Vert-60, #64afb7);
  198. display: flex;
  199. left: 0;
  200. padding: 25px 28px;
  201. align-items: center;
  202. gap: 9px;
  203. color: var(--NEUTRAL---BLANC, #fff);
  204. font-family: Barlow;
  205. font-size: 0.9rem;
  206. border-radius: 5px;
  207. font-style: normal;
  208. font-weight: 700;
  209. line-height: 15px;
  210. letter-spacing: 1.3px;
  211. text-transform: uppercase;
  212. margin-bottom: -1rem;
  213. }
  214. .green--text {
  215. color: green;
  216. }
  217. .red--text {
  218. color: red;
  219. }
  220. .black--text {
  221. color: black;
  222. }
  223. .btn-news {
  224. color: #9edbdd;
  225. border-radius: 2rem;
  226. font-family: "Barlow";
  227. background: transparent;
  228. border: 1px solid #9edbdd;
  229. border-radius: 6px;
  230. font-style: normal;
  231. font-weight: 600;
  232. text-transform: uppercase;
  233. display: flex;
  234. flex-direction: row;
  235. align-items: center;
  236. padding: 25px;
  237. font-size: 10px;
  238. line-height: 15px;
  239. }
  240. .chip-detail {
  241. color: #000000;
  242. }
  243. .chip-custom {
  244. color: white;
  245. border: 1px solid white;
  246. border-radius: 3rem;
  247. text-transform: uppercase;
  248. font-family: "Barlow";
  249. font-style: normal;
  250. display: flex;
  251. align-items: center;
  252. text-align: center;
  253. }
  254. .card-localisation {
  255. letter-spacing: 0.18em;
  256. text-transform: uppercase;
  257. font-size: 10px;
  258. color: #112528;
  259. }
  260. .card {
  261. border-radius: 15px 15px 0 0;
  262. margin-bottom: 2rem;
  263. }
  264. .icon-title {
  265. color: #64afb7;
  266. margin-top: 4.5rem;
  267. }
  268. .container-title {
  269. display: flex;
  270. align-items: center;
  271. margin-left: 2rem;
  272. margin-top: 4.5rem;
  273. }
  274. .carousel-button i {
  275. color: #000000;
  276. }
  277. .card-text {
  278. font-family: "Barlow";
  279. font-style: normal;
  280. font-weight: 500;
  281. font-size: 16px;
  282. line-height: 18px;
  283. margin-bottom: 1rem;
  284. color: #fff !important;
  285. }
  286. .card-title {
  287. font-family: "Barlow";
  288. font-style: normal;
  289. font-weight: 500;
  290. font-size: 20px;
  291. line-height: 24px;
  292. display: flex;
  293. align-items: center;
  294. letter-spacing: 0.18em;
  295. text-transform: uppercase;
  296. color: #fff !important;
  297. }
  298. .card-date {
  299. font-size: 0.8em;
  300. color: #888;
  301. margin-left: 1rem;
  302. color: #fff !important;
  303. }
  304. .card-footer {
  305. display: flex;
  306. justify-content: space-between;
  307. align-items: center;
  308. }
  309. .card-body {
  310. text-align: left;
  311. margin-bottom: 1rem;
  312. margin-left: 1rem;
  313. font-family: "Barlow";
  314. font-style: normal;
  315. font-weight: 500;
  316. line-height: 24px;
  317. color: #fff !important;
  318. color: #112528;
  319. }
  320. .card-img-top {
  321. border-radius: 9px 9px 0 0;
  322. width: 100%;
  323. object-fit: 90%;
  324. object-position: center;
  325. width: 384px;
  326. height: 247.11px;
  327. }
  328. .title,
  329. .carousel-button,
  330. .btn-news {
  331. margin-top: 2rem;
  332. margin-bottom: 2rem;
  333. }
  334. .agenda-details {
  335. font-family: "Barlow";
  336. font-style: normal;
  337. font-weight: 300;
  338. font-size: 16px;
  339. line-height: 20px;
  340. margin-left: 2rem;
  341. color: #091d20;
  342. margin-bottom: 3rem;
  343. width: 15rem;
  344. }
  345. .title {
  346. font-family: "Barlow";
  347. font-style: normal;
  348. font-weight: 600;
  349. font-size: 42px;
  350. line-height: 42px;
  351. margin-left: 2rem;
  352. color: #071b1f;
  353. }
  354. .carousel-button {
  355. display: flex;
  356. justify-content: center;
  357. align-items: center;
  358. width: 60px;
  359. height: 60px;
  360. background-color: transparent;
  361. border: 2px solid #000000;
  362. cursor: pointer;
  363. margin-right: 1rem;
  364. }
  365. .container-green {
  366. background-color: #0e2d32;
  367. }
  368. .back-button {
  369. text-decoration: none;
  370. color: #000000;
  371. font-family: "Barlow";
  372. font-size: 0.9rem;
  373. font-style: normal;
  374. font-weight: 700;
  375. letter-spacing: 1.8px;
  376. text-transform: uppercase;
  377. }
  378. .description-actu {
  379. color: #0e2d32;
  380. text-align: justify;
  381. font-family: Barlow;
  382. font-size: 30px;
  383. font-style: normal;
  384. font-weight: 500;
  385. line-height: 34px;
  386. margin-left: 3.5rem;
  387. margin-right: 3.5rem;
  388. margin-bottom: 3rem;
  389. }
  390. .share {
  391. color: #000;
  392. font-family: Barlow;
  393. font-size: 26px;
  394. font-style: normal;
  395. font-weight: 400;
  396. line-height: 28px;
  397. }
  398. .social-icons {
  399. display: flex;
  400. gap: 10px;
  401. }
  402. .social-icon i {
  403. font-size: 1.9em;
  404. margin-left: 0.5rem;
  405. margin-top: 0.5rem;
  406. color: #0e2d32;
  407. }
  408. .key-word {
  409. color: #000;
  410. font-family: Barlow;
  411. font-size: 20px;
  412. font-style: normal;
  413. font-weight: 500;
  414. line-height: 24px;
  415. }
  416. .title-other {
  417. color: #fff;
  418. }
  419. </style>